/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.redejava.ciep;

import br.com.redejava.ciep.interfaces.JFrameUnidade;
import br.com.redejava.ciep.interfaces.JrameUnidades;
import br.com.redejava.ciep.negocios.Cidade;
import br.com.redejava.ciep.negocios.Loja;
import br.com.redejava.ciep.negocios.UnidadeRegionalEstoque;
import java.util.ArrayList;
import javax.swing.JDesktopPane;

/**
 * Classe principal do Sistema Ciep (Controle interno de estoque de produtos).
 * Esta classe possui a interface principal, bem como menus e chamada para todas as demais interfaces do sistema.
 * 
 * @author Brando
 */
public class CiepMain extends javax.swing.JFrame {
    
    private JDesktopPane jDesktopPanePrincipal = null;
    private JFrameUnidade fLoja = null;
    private JrameUnidades fUnidades = null;
    private ArrayList<Cidade> cidades = null;
            
    /**
     * Creates new form CiepMain
     */
    public CiepMain() {
        initComponents();
        this.setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
        jDesktopPanePrincipal = new JDesktopPane();
        setContentPane(jDesktopPanePrincipal);
        jDesktopPanePrincipal.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
        InstanciaCidadesUnidades();
    }
    
    private void InstanciaCidadesUnidades() {
        if (cidades == null) {
            cidades = new ArrayList<>();
        }
        //Goiania
        Cidade goiania = new Cidade();
        goiania.setNome("Goiânia");
        goiania.setRegiao("Centro-Oeste");
        goiania.setEstado("Goiás");
        UnidadeRegionalEstoque ureGoiania = new UnidadeRegionalEstoque();
        ureGoiania.setNome("Unidade Regional de Estoque");
        ureGoiania.setEndereco("Avenida Pedro II, nº 600 - Bela Vista");
        goiania.addUnidade(ureGoiania);
        Loja lojaGoiania = new Loja();
        lojaGoiania.setNome("Loja");
        lojaGoiania.setEndereco("Rua Solimões, nº 1207 - Centro");
        goiania.addUnidade(lojaGoiania);
        cidades.add(goiania);
        //Recife
        Cidade recife = new Cidade();
        recife.setNome("Recife");
        recife.setRegiao("Nordeste");
        recife.setEstado("Pernambuco");
        UnidadeRegionalEstoque ureRecife = new UnidadeRegionalEstoque();
        ureRecife.setNome("Unidade Regional de Estoque");
        ureRecife.setEndereco("Avenida Boa Viagem, nº 45 - Boa Viagem");
        recife.addUnidade(ureRecife);
        Loja lojaRecife = new Loja();
        lojaRecife.setNome("Loja");
        lojaRecife.setEndereco("Rua dos Buritis, nº 2006 - Recife Antigo");
        recife.addUnidade(lojaRecife);
        cidades.add(recife);
        //Manaus
        Cidade manaus = new Cidade();
        manaus.setNome("Manaus");
        manaus.setRegiao("Norte");
        manaus.setEstado("Amazonas");
        UnidadeRegionalEstoque ureManaus = new UnidadeRegionalEstoque();
        ureManaus.setNome("Unidade Regional de Estoque");
        ureManaus.setEndereco("Rua Parintins, nº 609 - Amazonas");
        manaus.addUnidade(ureManaus);
        Loja lojaManaus = new Loja();
        lojaManaus.setNome("Loja");
        lojaManaus.setEndereco("Largo Santa Cruz, s/n - Centro");
        manaus.addUnidade(lojaManaus);
        cidades.add(manaus);
        //Belo Horizonte
        Cidade beloHorizonte = new Cidade();
        beloHorizonte.setNome("Belo Horizonte");
        beloHorizonte.setRegiao("Sudeste");
        beloHorizonte.setEstado("Minas Gerais");
        UnidadeRegionalEstoque ureBeloHorizonte = new UnidadeRegionalEstoque();
        ureBeloHorizonte.setNome("Unidade Regional de Estoque");
        ureBeloHorizonte.setEndereco("Rua da Bahia, nº 300 - Centro");
        beloHorizonte.addUnidade(ureBeloHorizonte);
        Loja lojaBeloHorizonte = new Loja();
        lojaBeloHorizonte.setNome("Loja");
        lojaBeloHorizonte.setEndereco("Avendia Presidente Kubicheck, 709 - Pampulha");
        beloHorizonte.addUnidade(lojaBeloHorizonte);
        cidades.add(beloHorizonte);
        //Curitiba
        Cidade curitiba = new Cidade();
        curitiba.setNome("Curitiba");
        curitiba.setRegiao("Sul");
        curitiba.setEstado("Paraná");
        UnidadeRegionalEstoque ureCuritiba = new UnidadeRegionalEstoque();
        ureCuritiba.setNome("Unidade Regional de Estoque");
        ureCuritiba.setEndereco("Avenida dos Goytacás, nº 11 - Horto");
        curitiba.addUnidade(ureCuritiba);
        Loja lojaCuritiba = new Loja();
        lojaCuritiba.setNome("Loja");
        lojaCuritiba.setEndereco("Rua Bandeirantes, 114 - São Sebastião");
        curitiba.addUnidade(lojaCuritiba);
        cidades.add(curitiba);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jMenuMain = new javax.swing.JMenuBar();
        jMenuArquivo = new javax.swing.JMenu();
        jMenuItemSair = new javax.swing.JMenuItem();
        jMenuUnidades = new javax.swing.JMenu();
        jMenuItemUnidades = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Ciep 1.0");
        setName("jFramePrincipal"); // NOI18N

        jMenuArquivo.setText("Arquivo");

        jMenuItemSair.setText("Sair");
        jMenuItemSair.addActionListener(new java.awt.event.ActionListener() {
            @Override
			public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemSairActionPerformed(evt);
            }
        });
        jMenuArquivo.add(jMenuItemSair);

        jMenuMain.add(jMenuArquivo);

        jMenuUnidades.setText("Unidades");

        jMenuItemUnidades.setText("Lojas / UREs");
        jMenuItemUnidades.addActionListener(new java.awt.event.ActionListener() {
            @Override
			public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemUnidadesActionPerformed(evt);
            }
        });
        jMenuUnidades.add(jMenuItemUnidades);

        jMenuMain.add(jMenuUnidades);

        setJMenuBar(jMenuMain);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 665, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 487, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    /**
     * Evento do menu principal que instancia e exibe a interface do cadastro de Loja.
     * @param evt 
     */
    private void jMenuItemUnidadesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemUnidadesActionPerformed
        if (fUnidades == null) {
            fUnidades = new JrameUnidades(this.cidades);
        }
        if (!fUnidades.isVisible()) {
            jDesktopPanePrincipal.add(fUnidades);
            fUnidades.setVisible(true);
        }
    }//GEN-LAST:event_jMenuItemUnidadesActionPerformed

    private void jMenuItemSairActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemSairActionPerformed
        System.exit(0);
    }//GEN-LAST:event_jMenuItemSairActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(CiepMain.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(CiepMain.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(CiepMain.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(CiepMain.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
			public void run() {
                new CiepMain().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenu jMenuArquivo;
    private javax.swing.JMenuItem jMenuItemSair;
    private javax.swing.JMenuItem jMenuItemUnidades;
    private javax.swing.JMenuBar jMenuMain;
    private javax.swing.JMenu jMenuUnidades;
    // End of variables declaration//GEN-END:variables
}
